home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Directorty Opus 5 - Magellan
/
Opus 5 - Magellan.iso
/
Extras
/
hotlist_source
/
source
/
ResourceNodes.h
< prev
next >
Wrap
C/C++ Source or Header
|
1996-10-02
|
3KB
|
57 lines
/*====================================================================================-.
|| Resource Node structures. ||
`-====================================================================================*/
typedef struct resnode
{
struct resnode *rn_Next; /* Pointer to next ResNode, if any. */
struct resnode *rn_Prev; /* Pointer to previous ResNode, if any. */
ULONG rn_Size; /* Size of allocation (to be made). */
void *rn_Mem; /* Memory allocated. Must have size rn_MemSize */
STRPTR rn_Name; /* (File)Name associated with ResNode. */
BPTR rn_FHandle; /* File Handle. */
BPTR rn_Lock; /* File Lock. */
struct FileInfoBlock *rn_FIB; /* File Info Block. */
BOOL rn_TempFile; /* If TRUE, file deleted when ResNode is. */
} ResNode;
typedef struct resnode_data
{
APTR poolhead; // Memory pool handler. (Uses Opus5 routines)
ResNode *resnode_base; // The base (first) node in linked list.
void *data; // For your own use. Given to informUser() only.
} ResNode_Data;
/*====================================================================================-.
|| Magic Numbers ||
`-====================================================================================*/
#define RN_INUSE_DELAY 2 // Time, in seconds, to wait between retries when a
// resource is in use.
#define RN_INUSE_RETRIES 2 // Number of times to retry before giving up
// (so total attempts is RETRIES+1).
/*====================================================================================-.
|| Prototypes for Functions in ResourceNodes.c ||
`-====================================================================================*/
ResNode *createResNode(ResNode_Data *rnd);
void deleteResNode(ResNode_Data *rnd,ResNode *doomedResNode);
void deleteAllResNodes(ResNode_Data *rnd);
void *allocMemResNode(ResNode_Data *rnd,ResNode *daddyResNode,ULONG memSize);
ResNode *allocNewResNode(ResNode_Data *rnd,ULONG memSize);
void freeMemResNode(ResNode_Data *rnd,ResNode *dietResNode);
BPTR lockFileResNode(ResNode_Data *rnd,ResNode *lockResNode,LONG lockmode);
void unlockFileResNode(ResNode_Data *rnd,ResNode *lockedResNode);
struct FileInfoBlock *examineResNode(ResNode_Data *rnd,ResNode *rn);
void freeFIBResNode(ResNode_Data *rnd,ResNode *rn);
BPTR openFileResNode(ResNode_Data *rnd,ResNode *rn,LONG mode);
void closeFileResNode(ResNode_Data *rnd,ResNode *rn);
void deleteFileResNode(ResNode_Data *rnd,ResNode *rn);